<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
<script>
    //块内变量无法在块外被访问
    function fn(){
        let nickname='袁晓宇';
    }
    // console.log(nickname);//报错

    // 函数嵌套
    function f1(){
        function f2(){

        }
        f2();
    }
    f1();

    //顶级作用域 ：window
    console.log(window);

    //作用域读取规则:就近原则

    //1、当前作用域存在:读取当前作用域的
    let age =20;
    function f11(){
        let age =300;
        console.log(age);
    }
    f11();
    //2、当前作用域不存在，上级存在:读取上级的
    let sex='男';
    function f2(){
        console.log(sex);
    }
    f2();
    //2、当前作用域不存在，上级不存在，上层级有:读取上层级别的
    let girlfriend='袁晓宇';
    function f3(){
        function f4(){
            console.log(girlfriend);
        }
        f4();
    }
    f3();


    //修改变量，当前作用域找不到就去上级作用域找，
    // 如果到Window都找不到，就会在window上创建这个变量然后修改
    function fnn(){
        email="111.com";

    }
    fnn();
    console.log(email);                      

</script>